﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using SharpSphinx.Util.Configuration;

namespace SharpSphinx.Frontend
{
     public interface IDataProcessor : IConfigurable 
    {

         /// <summary>
        /// Initializes this DataProcessor. This is typically called after the DataProcessor has been configured.
         /// </summary>
          void Initialize();




         /// <summary>
         /// Returns the processed Data output.
         /// </summary>
         /// <returns></returns>

         IData getData();


         /// <summary>
         /// Returns the predecessor DataProcessor.
         /// </summary>
         /// <returns></returns>
          IDataProcessor getPredecessor();

         /// <summary>
         /// Sets the predecessor DataProcessor. This method allows dynamic reconfiguration of the front end.
         /// </summary>
         /// <param name="predecessor"></param>
         void setPredecessor(IDataProcessor predecessor); 

    }
}
